package sys_config

import "strings"

// 串口别名
type SerialAddrAliasEnv struct {
	Com1  string `yaml:"com1" env:"GW_SERIAL_ALIAS_COM1" env-default:"COM1" `
	Com2  string `yaml:"com2" env:"GW_SERIAL_ALIAS_COM2" env-default:"COM2" `
	Com3  string `yaml:"com3" env:"GW_SERIAL_ALIAS_COM3" env-default:"COM3" `
	Com4  string `yaml:"com4" env:"GW_SERIAL_ALIAS_COM4" env-default:"COM4" `
	Com5  string `yaml:"com5" env:"GW_SERIAL_ALIAS_COM5" env-default:"COM5" `
	Com6  string `yaml:"com6" env:"GW_SERIAL_ALIAS_COM6" env-default:"COM6" `
	Com7  string `yaml:"com7" env:"GW_SERIAL_ALIAS_COM7" env-default:"COM7" `
	Com8  string `yaml:"com8" env:"GW_SERIAL_ALIAS_COM8" env-default:"COM8" `
	Com9  string `yaml:"com9" env:"GW_SERIAL_ALIAS_COM9" env-default:"COM9" `
	Com10 string `yaml:"com10" env:"GW_SERIAL_ALIAS_COM10" env-default:"COM10" `
	Com11 string `yaml:"com11" env:"GW_SERIAL_ALIAS_COM11" env-default:"COM11" `
	Com12 string `yaml:"com12" env:"GW_SERIAL_ALIAS_COM12" env-default:"COM12" `
	Com13 string `yaml:"com13" env:"GW_SERIAL_ALIAS_COM13" env-default:"COM13" `
	Com14 string `yaml:"com14" env:"GW_SERIAL_ALIAS_COM14" env-default:"COM14" `
	Com15 string `yaml:"com15" env:"GW_SERIAL_ALIAS_COM15" env-default:"COM15" `
	Com16 string `yaml:"com16" env:"GW_SERIAL_ALIAS_COM16" env-default:"COM16" `
	Can1  string `yaml:"can1" env:"GW_SERIAL_ALIAS_CAN1" env-default:"CAN1" `
	Can2  string `yaml:"can2" env:"GW_SERIAL_ALIAS_CAN2" env-default:"CAN2" `
	Can3  string `yaml:"can3" env:"GW_SERIAL_ALIAS_CAN3" env-default:"CAN3" `
	Can4  string `yaml:"can4" env:"GW_SERIAL_ALIAS_CAN4" env-default:"CAN4" `
}

// 根据串口别名获取地址
func (env *SerialAddrAliasEnv) SerialAddr(serialAlias string) string {
	switch strings.ToLower(strings.TrimSpace(serialAlias)) {
	case "com1":
		return env.Com1
	case "com2":
		return env.Com2
	case "com3":
		return env.Com3
	case "com4":
		return env.Com4
	case "com5":
		return env.Com5
	case "com6":
		return env.Com6
	case "com7":
		return env.Com7
	case "com8":
		return env.Com8
	case "com9":
		return env.Com9
	case "com10":
		return env.Com10
	case "com11":
		return env.Com11
	case "com12":
		return env.Com12
	case "com13":
		return env.Com13
	case "com14":
		return env.Com14
	case "com15":
		return env.Com15
	case "com16":
		return env.Com16
	case "can1":
		return env.Can1
	case "can2":
		return env.Can2
	case "can3":
		return env.Can3
	case "can4":
		return env.Can4
	}

	return ""
}
